package com.gjzhao.fmmall.service.juc;

/**
 * @Description: 使用原子类保证原子性
 * @Author: gjzhao
 * @Date Created in 2022-03-05 11:22 下午
 */
public class TestJMMAtomicByInteger {
    public static void main(String[] args) {

        //资源类
        OrderForJMM orderForJMM = new OrderForJMM();

        //创建10个线程用于++操作
        for (int i = 0; i < 10; i++) {

            //每个线程每次++共 1000次
            new Thread(() -> {

                for (int j = 0; j < 1000; j++) {

                    //将原子类的值加1
                    orderForJMM.atomicNumber.getAndIncrement();
                    //赋值给number
                    orderForJMM.setNumberPlusPlus();
                }

            }, "A线程").start();
        }

        //如果除了main与gc线程，还有其他的线程，先让其他线程先执行
        while (Thread.activeCount() > 2) {
            Thread.yield();
        }


        System.out.println("----++操作全部执行完成，最后的和为:" + orderForJMM.number);

    }

}
